function ccR_Warrior_3()
	if ccrPlayerLevel() >= 10 and ccrPlayerLevel() <= 90 then ccR_Warrior_Protection_10_90() end
end

function ccR_Warrior_Protection_10_90()
	if ccrPlayerIsInCombat() then
		ccR_Warrior_Protection_Shout()
		ccR_Warrior_ShieldWall()
		ccR_Warrior_Berserker_Rage()
		ccR_Warrior_Die_By_The_Sword()
		ccR_Warrior_Sweeping_Strikes()
		ccR_Warrior_Recklessness()
		ccR_Warrior_Rallying_Cry()
		ccR_Warrior_Skull_Banner()

		ccR_Warrior_Last_Stand()
		-- Talents
		-- 30
			ccR_Warrior_Enraged_Regeneration()
		-- 60
			ccR_Warrior_Bladestorm()
			ccR_Warrior_Shockwave()
			ccR_Warrior_Dragon_Roar()
		-- 90
			ccR_Warrior_Avatar()
			ccR_Warrior_Bloodbath()
			ccR_Warrior_Storm_Bolt()
	end

	ccR_Warrior_Pummel()
	ccR_Warrior_Charge()

	-- Our target may not be with the mobs surrounding the player,
	-- so ensure we keep aggro this way
	local vMeleeEnemies = #tblPGetMeleeEnemies
	if vMeleeEnemies >= 2 then
		ccR_Warrior_Protection_Thunder_Clap() 
	end
	if vMeleeEnemies >= 6 then
		ccR_Warrior_Protection_Demoralizing_Shout()
	end

	ccR_Warrior_Victory_Rush()
	ccR_Warrior_Disarm()

	ccR_Warrior_Revenge()
	ccR_Warrior_Shield_Slam()
	ccR_Warrior_Shield_Block()

	if (ccrPlayerRage() >= 80
	or PlayerIsSOLO() 
	or ccrPlayerHasBuff(SHIELD_BLOCK)
	or ccrPlayerHasBuff(ULTIMATUM))
	and ccrValidTarget()
	and ccrTargetIsWithinMeleeRange()
	then
		local vTargets = #tblPGetMeleeEnemies
		if vTargets == 1 then ccR_Warrior_Heroic_Strike() end
		if vTargets >= 2 then ccR_Warrior_Protection_Cleave() end
	end

	ccR_Warrior_Devastate()
end
